Configuration for Logging in ASP.NET Core

ASP.NET Core में Logging की कॉन्फ़िगरेशन

ASP.NET Core में Logging की कॉन्फ़िगरेशन वास्तव में उसके आधुनिक, फ्लेक्सिबल और एक्स्टेंसिबल डिज़ाइन को दर्शाती है। इसको समझने के लिए हमें तीन मुख्य घटकों - कॉन्फ़िगरेशन सोर्स, कॉन्फ़िगरेशन डाटा और कॉन्फ़िगरेशन प्रोवाइडर - की भूमिका को स्पष्ट करना होगा:

1. Configuration Source (कॉन्फ़िगरेशन स्रोत)

यह वह "origin" है जहाँ से ASP.NET Core आपकी ऐप के लिए configuration data पढ़ता है।

उदाहरण:

  • json (या appsettings.Development.json)
  • Command-line arguments (--loglevel Debug)
  • Environment variables (ASPNETCORE_LOGGING__LOGLEVEL__DEFAULT)
  • User secrets
  • Azure Key Vault

परिभाषा:

public interface IConfigurationSource

👉 ASP.NET Core में प्रत्येक configuration source को एक provider में बदला जाता है।

2. Configuration Provider (कॉन्फ़िगरेशन प्रदाता)

यह एक ऐसा component है जो Configuration Source से डेटा लेकर उसे app के उपयोग योग्य key-value pairs में बदलता है।

उदाहरण:

  • JsonConfigurationProvider → JSON फ़ाइल पढ़ता है
  • EnvironmentVariablesConfigurationProvider → Env vars पढ़ता है
  • CommandLineConfigurationProvider → CLI arguments पढ़ता है
  • MemoryConfigurationProvider → रनटाइम में इन-मेमोरी सेटिंग्स के लिए

परिभाषा:

public interface IConfigurationProvider

👉 हर IConfigurationSource object का Build() method एक IConfigurationProvider लौटाता है।

3. Configuration Data (कॉन्फ़िगरेशन डेटा)

यह वह वास्तविक डेटा है जो सभी providers से मिलकर बना होता है और IConfiguration के रूप में उपलब्ध होता है।

उदाहरण के लिए, appsettings.json में लॉगिंग का भाग:

        {
            "Logging": {
                "LogLevel": {
                    "Default": "Information",
                    "Microsoft.AspNetCore": "Warning"
                }
            },
            "AllowedHosts": "*"
        }
        

यह डेटा Configuration Providers द्वारा पढ़कर इस रूप में उपलब्ध होता है:

var logLevel = configuration["Logging:LogLevel:Default"]; // Returns "Information"

यह तीनों कैसे जुड़ते हैं?

Sources => Providers => Data

appsettings.json, Env Vars) => Json/EnvVar Provider => IConfiguration usable data

और यह सारा डेटा HostBuilder या WebApplicationBuilder में आता है:

var builder = WebApplication.CreateBuilder(args); // builder.Configuration अब सभी config providers से डेटा पढ़ चुका है

var level = builder.Configuration["Logging:LogLevel:Default"];

ASP.NET Core में लॉगिंग कॉन्फ़िगरेशन कैसे पढ़ी जाती है?

Logging system खुद IConfiguration को पढ़ता है और इसकी मदद से लॉगर्स को configure करता है।

builder.Logging.ClearProviders(); builder.Logging.AddConsole(); builder.Logging.AddConfiguration(builder.Configuration.GetSection("Logging"));

ऊपर की लाइन Logging सेक्शन को पढ़कर सारे लॉगर्स को configure करती है — जैसे कि log level, filters, scopes आदि।

एक Visualization:

कल्पना कीजिए कि आपकी एप्लिकेशन एक महल है, जिसमें आपको बहुत सी जानकारी (logging settings) दरबारियों से चाहिए:

तत्व उपमा
Configuration Source वह स्थान जहाँ से सूचना आती है (काग़ज़, पत्र, मौखिक आज्ञा)
Configuration Provider वह दरबारी जो उस सूचना को पढ़कर राजा को समझाता है
Configuration Data वह वास्तविक सूचना जो राजा (ASP.NET Core) अपने निर्णयों के लिए उपयोग करता है

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Differences between in-process and out-of-process hosting models

Web Fundamental Concepts in Hindi for Beginners - FAQs with their Answers Part-1

Introduction to ASP.NET Core and Web Frameworks